
//
// download item
//
@interface TorrentDownloadItem : NSObject

//
// started
//
#define kTorrentStateStarted												0x01

//
// paused
//
#define kTorrentStatePaused													0x02
	
//
// checking
//
#define kTorrentStateChecking												0x04
	
//
// hashing
//
#define kTorrentStateHashing												0x08

//
// queued
//
#define kTorrentStateQueued													0x10
	
//
// error
//
#define kTorrentStateError													0x20

//
// name
//
@property(strong, nonatomic, readwrite) NSString*							torrentName;

//
// info hash
//
@property(strong, nonatomic, readwrite) NSString*							infoHash;

//
// state
//
@property(assign, nonatomic, readwrite) NSInteger							state;

//
// size
//
@property(assign, nonatomic, readwrite) uint64_t							size;

//
// downloaded size
//
@property(assign, nonatomic, readwrite) uint64_t							downloadedSize;

//
// uploaded size
//
@property(assign, nonatomic, readwrite) uint64_t							uploadedSize;

//
// download rate
//
@property(assign, nonatomic, readwrite) uint64_t							downloadRate;

//
// upload rate
//
@property(assign, nonatomic, readwrite) uint64_t							uploadRate;

//
// seeder count
//
@property(assign, nonatomic, readwrite) NSInteger							seederCount;

//
// peer count
//
@property(assign, nonatomic, readwrite) NSInteger							peerCount;

//
// total seeder count
//
@property(assign, nonatomic, readwrite) NSInteger							totalSeederCount;

//
// total peer count
//
@property(assign, nonatomic, readwrite) NSInteger							totalPeerCount;

//
// share rate
//
@property(assign, nonatomic, readwrite) NSInteger							shareRatio;

//
// message
//
@property(strong, nonatomic, readwrite) NSString*							message;

//
// base path
//
@property(strong, nonatomic, readwrite) NSString*							basePath;

//
// left time
//
@property(assign, nonatomic, readwrite) NSInteger							leftTime;

//
// status
//
@property(strong, nonatomic, readonly) NSString*							status;

//
// can start
//
@property(assign, nonatomic, readonly) BOOL									canStart;

//
// can pause
//
@property(assign, nonatomic, readonly) BOOL									canPause;

//
// can stop
//
@property(assign, nonatomic, readonly) BOOL									canStop;

//
// can recheck
//
@property(assign, nonatomic, readonly) BOOL									canRecheck;

@end
